package com.sky.mapper;

import com.sky.entity.Admin;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

@Mapper
public interface AdminMapper {
    /**
     * 根据用户名查询管理员
     * @param username 用户名
     * @return 管理员对象
     */
    Admin selectByUsername(String username);

    /**
     * 更新管理员最后登录时间
     * @param id 管理员id
     * @param lastLoginTime 最后登录时间
     */
    void updateLastLoginTime(@Param("id") Long id, @Param("lastLoginTime") LocalDateTime lastLoginTime);

    /**
     * 分页查询管理员
     * @param map 查询条件
     * @return 管理员列表
     */
    List<Admin> selectByPage(Map<String, Object> map);

    /**
     * 查询管理员总数
     * @param map 查询条件
     * @return 管理员总数
     */
    Integer selectCount(Map<String, Object> map);

    /**
     * 新增管理员
     * @param admin 管理员对象
     */
    void insert(Admin admin);

    /**
     * 根据id查询管理员
     * @param id 管理员id
     * @return 管理员对象
     */
    Admin selectById(Long id);

    /**
     * 更新管理员信息
     * @param admin 管理员对象
     */
    void update(Admin admin);

    /**
     * 更新管理员密码
     * @param id 管理员id
     * @param password 新密码
     */
    void updatePassword(@Param("id") Long id, @Param("password") String password);

    /**
     * 更新管理员状态
     * @param id 管理员id
     * @param status 状态
     */
    void updateStatus(@Param("id") Long id, @Param("status") String status);

    /**
     * 删除管理员
     * @param id 管理员id
     */
    void deleteById(Long id);
}